In the design of hardware, e.g. memory arrays and other hardware having repetitive structures, it is known to use a so-called “compiler” that receives parameter inputs from a user and convert these inputs into commands that can be fed into a hardware design environment such as Cadence® that then produces layout data or schematics for the envisaged design. The “compiler” is preferably custom code that takes into consideration not only the envisaged structure of the hardware design, but also, to some respect, specifics of the technology to be used for implementing the hardware design.